
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // this的场景
        // 1.函数调用
        // "use strict"//用严格模式就不是指向window
        // function foo(){
        //     console.log(this);//windows
        // }
        // foo();

        //2.函数放在对象中
        // let obj = {
        //     name:  "张三",
        //     foo(){
        //         console.log("foo",this);//指向obj这个对象
        //     }
        // } 

        // obj.foo()//调用就指向对应的对象

        // 3.通过构造函数去调用
        // function Person(name){
        //     this.name = name;
        // }

        // Person.prototype.foo = function(){
        //     console.log("foo",this);
        // }

        // let aa = new Person("张三");

        // // this指向实例化对象aa
        // aa.foo();




        // 箭头函数的this指向
        // function Person(name){
        //     this.name = name;
        // }

        // Person.prototype.foo = () =>{
        //     console.log("foo",this);
        // }

        // let aa = new Person("张三");

        // // this指向实例化对象aa
        // aa.foo();//找上一层 window

        let obj = {
            name:  "张三",
            foo: () =>{
                console.log("foo",this);//上一层window
            }
        } 

        obj.foo()

    </script>
</body>
</html>